#pragma once
#pragma warning (disable : 4275 )

#include "foundation/PxMat44.h"
#include "Vector3.h"
#include "Quaternion.h"



namespace Boon
{
	namespace Physics{ class NvidiaPhysX; }

	class Vector2;

	class BOON_API Matrix44 : public physx::PxMat44
	{
		public:
		Matrix44();
		Matrix44( const Matrix44& o );
		inline Matrix44( const Quaternion& q ) : physx::PxMat44( q ) { }

		void					Rotate( float angle ); // rotate around z_axis in 2D space
		void					Translate( const Vector3& v );
		const Vector3			GetPosition() const;
		void					SetPosition( const Vector3& position );
		inline Matrix44&		Rotate(const Quaternion& q ) 
		{
			Matrix44 rotation( q );
			this->operator*( rotation );
			return *this;
		}
		friend class Physics::NvidiaPhysX;
	};

}
